package com.itheima.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLIntegrityConstraintViolationException;
@SuppressWarnings("all")
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
    /* //全局的异常处理类
    @ExceptionHandler //该方法表示是一个处理异常的方法
    public R GlobalExceptionHandler(Exception e) { //这里面的参数表示要处理的异常类型
        log.info("后台出现了异常:{}", e.getMessage());
        return R.error("未知的异常,吕凡福是傻逼");
    }*/

    /**
     * 如果有重复添加的信息就会捕捉
     * @param e
     * @return
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> GlobalExceptionHandler(SQLIntegrityConstraintViolationException e){
        //获取错误信息
        String message = e.getMessage();//Duplicate entry 'qlck' for key 'idx_username'
        //截取具体的用户名
        String name = message.split(" ")[2];
        //响应信息
        return R.error(name+"已经存在,不能重复添加");
    }

    /**
     * 自定义的异常信息
     * @param e
     * @return
     */
    @ExceptionHandler(ParmasException.class)
    public R<String> GlobalExceptionHandler(ParmasException e){
        //获取错误信息
        String message = e.getMessage();
        //响应信息
        return R.error(message);
    }
}